#pragma once

#include <iostream>
#include <utility>
#include <time.h>
#include <fstream>
#include <string.h>
#include "kernel_caller.cuh"

using namespace std;

typedef pair <float, float> floatPair;
void initializeMatrix(int matrixHeight1, int matrixWidth1, int matrixHeight2, int matrixWidth2, floatPair matrixRange);
float* multiplySequencially(float *matrix1, int height1, int width1, float *matrix2, int height2, int width2);
void readMatrixFromFile(float *&matrix, int &height, int &width, string fileName);
void writeMatrixToFile(float *matrix, int height, int width, string fileName);
float *createMatrix(int height, int width, float lowerBound, float upperBound);
float *createZeroMatrix(int height, int width);
bool verify(const float *result, const float *correctResult, const int height, const int width);